// pages/search/search.js
//引入request文件
import request from '../../utils/request'
//节流的标识
let isSend = false;
Page({

    /**
     * 页面的初始数据
     */
    data: {
        placeholderContext: '', //默认的提示信息
        hotList: [], //热词
        searchContent: '',
        searchList: [], //模糊查询到的列表数据  
        historyList: [] //历史记录数组  
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {
        //初始化数据方法
        this.initData()
        //获取历史记录
        this.getHistoryList()
    },
    //初始化数据方法
    async initData() {
        const placeholderData = await request('/search/default')
        const hostListData = await request('/search/hot/detail')
        //更新数据
        //   console.log("placeholderData",placeholderData)
        //   console.log("hostListData",hostListData)
        this.setData({
            placeholderContext: placeholderData.data.realkeyword, //showKeyword
            hotList: hostListData.data //searchWord
        })
    },
    //根据输入框录入的数据，获取对应的模糊查询到的数据
    handlerSearchContent(event) {
        //获取文本框的数据
        const searchContext = event.detail.value
        //保存文本框中输入的数据
        this.setData({
            searchContext
        })
        if (isSend) {
            return
        }
        isSend = true
        //获取搜索到的内容
        this.getSearchList()
        //防抖或则节流来控制===定时器
        setTimeout(() => {
            isSend = false
        }, 200);
    },
    async getSearchList() {
        //获取文本框中录入的数据
        const {
            searchContext,
            historyList
        } = this.data
        //判断文本框中录入数据了么
        if (!searchContext) {
            //清空搜索列表数据
            this.setData({
                searchList: []
            })
            return
        }
        const searchListData = await request('/search', {
            keywords: searchContext,
            limit: 10
        })
        //更新数据
        this.setData({
            searchList: searchListData.result.songs
        })
        //判断历史记录的数组中是否有文本框中输入的标识
        if (historyList.indexOf(searchContext) !== -1) {
            //从历史记录中删除
            historyList.splice(historyList.indexOf(searchContext), 1)
        }
        //重新插入到数组的最前面
        historyList.unshift(searchContext)
        //更新历史数据
        this.setData({
            historyList
        })
        //从当前页面关闭后，再次进入到这个页面的时候，历史记录依然存在
        //把历史记录缓存起来
        wx.setStorageSync('searchHistoryList', historyList)
    },
    //获取历史记录数据
    getHistoryList() {
        const historyList = wx.getStorageSync('searchHistoryList')
        //判断是否存在
        if (historyList) {
            //更新数据
            this.setData({
                historyList
            })
        }
    },
    //删除历史记录
    deleteHistory() {
        wx.showModal({
            title: '删除提示',
            concent: '确定要删除历史记录吗',
            success: (res) => {
                if (res.confirm) {
                    this.setData({
                        historyList: []
                    })
                }
            }
        })
        //清空缓存
        wx.removeStorageSync('searchHistoryList')
    },
    //清除文本框的数据
    clear() {
        //  console.log('执行了')
        this.setData({
            searchContext: '',
            searchList: [],
        })
    },
    //回到视频页面
    toVideo() {
        wx.switchTab({
            url: '/pages/video/video'
        })
    },
    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function () {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function () {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function () {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function () {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function () {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function () {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function () {

    }
})